package net;


import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/**
 * 网络编程练习-客户端
 */
public class NetExercise02Client {

    public static void main(String[] args) throws Exception {

        /*
            1)编写客户端程序和服务端程序
            2)客户端可以输入一个音乐文件名，比如 高山流水，服务端收到音乐名后
              可以给客户端返回这个音乐文件，如果服务器没有这个文件，返回一个默认的音乐即可
            3)客户端收到文件后，保存到根目录下
            4)使用StreamUtils
         */
        String srcPath = "D:\\IdeaCode\\javaStudy\\src";

        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);

        System.out.println("请输入歌名:");
        Scanner scanner = new Scanner(System.in);
        String musicName = scanner.next();

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(musicName.getBytes());
        socket.shutdownOutput();    //设置结束标记

        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        byte[] musicData = StreamUtils.streamToByteArray(bis);
        System.out.println("收到音乐数据...");

        FileOutputStream fos = new FileOutputStream(srcPath + "\\" + musicName + ".mp3");
        fos.write(musicData);
        System.out.println("音乐文件创建成功...");
        fos.close();

        outputStream.close();
        socket.close();

    }
}
